Traitement XSLT des fichiers d'import XML
Le processeur EMu XSLT utilise les librairies Microsoft XML (MSXML). Dans le but d'utiliser le processeur XSLT il est nécessaire d'avoir MSXML 3.0 ou une version ultérieure installée (Windows 2000 SP4 ou Internet Explorer 6 ou version ultérieure, Windows XP, Windows Vista, Windows Server 2003).
L'Assistant d'importation EMu fournit le traitement XSLT des fichiers d'importation XML. Les extensions ne sont disponibles que pour les fichiers .xml. Si vous avez des fichiers XML avec une extension .txt, il sera nécessaire de les renommer afin d'utiliser le processeur XSLT.
Note: Des détails sur la façon d'effectuer une importation avec le traitement XSLT sont disponibles ici.
L'avènement du XML (eXtensible Markup Language) a fourni un mécanisme pour échanger des données entre systèmes informatiques basé sur des standards. Le XML, comme son nom l'indique, est extensible, c'est-à-dire que le format dans lequel les données sont stockées peut être adapté à la source de données. Même s’il s’agit de l'un des atouts du XML, cela pose également des problèmes lors de l'importation de données d'un système à un autre, lorsque les formats de données ne sont pas exactement identiques. Par exemple, considérons le fragment XML décrivant un travail d'art dans un Catalogue :
<table name="ecatalogue">
<tuple>
<atom column="TitMainTitle">An imaginary work of Art</atom>
<atom column="CreDateCreated">1995-07-02<atom>
<table column="CreCreatorRef_tab">
<tuple>
<atom column="NamLast">Citizen</atom>
<atom column="NamFirst">John</atom>
</tuple>
</table>
</tuple>
</table>
Vous recevez ces données depuis une autre institution utilisant EMu et voulez les importer dans votre système, mais il y a une incompatibilité entre certains des noms de colonnes dans votre système et dans celui de l'institution d'origine. Par exemple, dans votre Catalogue la colonne Title peut être appelle SumTitle et la colonne Date Created peut être appelée SumDateCreated. Avant que vous puissiez charger le XML dans votre système il est nécessaire de le transformer de façon à qu'il apparaisse comme :
<table name="ecatalogue">
<tuple>
<atom column="SumTitle">An imaginary work of Art</atom>
<atom column="SumDateCreated">1995-07-02</atom>
<table column="CreCreatorRef_tab">
<tuple>
<atom column="NamLast">Citizen</atom>
<atom column="NamFirst">John</atom>
</tuple>
</table>
</tuple>
</table>
Une façon de réaliser le changement est d'utiliser un éditeur de texte et de remplacer toutes les instances de TitMainTitle par SumTitle et CreDateCreated par SumDateCreated. Si ce volume de données est faible ou si l'import doit seulement avoir lieu une fois alors cette solution est utilisable. Si cependant de nombreux imports surviennent avec des données fournies dans le même format, il est logique d'utiliser XSLT (eXtensible Stylesheet Language Transforms) pour appliquer les changements avant que les données ne soient chargées. XSLT est un langage de script basé sur du XML utilisé pour manipuler XML.
Par exemple, le script suivant peut être utilisé pour réaliser le changement de nom des colonnes, expliqué ci-dessus :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="urn:map" version="1.0">
<!-- Sortie en format XML -->
<xsl:output method="xml" encoding="utf-8"/>
<!-- Faire correspondre les anciens vers les nouveaux noms -->
<map:entries>
<map:entry oldname="TitMainTitle" newname="SumTitle"/>
<map:entry oldname="CreDateCreated" newname="SumDateCreated"/>
</map:entries>
<xsl:variable name="map" select="document('')/*/map:entries/*"/>
<!-- Chaque nœud est recopié. Notons que les attributs
sont pris en charge par le prochain modèle -->
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Prise en compte particulière des attributs. -->
<xsl:template match="@*">
<xsl:variable name="entry" select="$map[@oldname = current()]"/>
<xsl:choose>
<xsl:when test="name() = 'column' and $entry">
<xsl:attribute name="column">
<xsl:value-of select="$entry/@newname"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:copy/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Pour exécuter le script un moteur XSL est requis. De nombreux produits fournissent des moteurs XSL qui peuvent être utilisés pour transformer le XML pour chargement dans EMu. Lorsqu'un fichier est reçu depuis une institution, il est seulement nécessaire de réaliser la transformation avant l'import du XML dans EMu.
Pour faciliter ce processus, le traitement XSLT a été ajouté dans le cadre de l'Outil d'importation de fichiers XML : il est possible d'importer un fichier XML et de le transformer dans le cadre du processus d'importation. Le fichier XSLT utilisé pour transformer le XML peut être stocké sur votre machine locale (fichier local) ou sur le serveur EMu (fichier pré-configuré). Les fichiers stockés sur le serveur EMu sont disponibles pour tous les utilisateurs. En général, les fichiers préconfigurés sont des transformations « standard » utilisées pour traiter des données provenant de sources connues. Une source connue peut être :
- un format standard (ex. Darwin Core ou Dublin Core)
- un format répétable (ex. format d'export EMu, BRAHMS)
En utilisant des formats répétables il est possible de définir des fichiers XSLT qui autorisent un import facile de données depuis des clients EMu pour des modules personnalisés tels que le Catalogue, Taxonomie et Événements de Collecte.
Il est possible d'avoir des fichiers XSLT préconfigurés stockés sur le serveur EMu. Ces fichiers sont accessibles à tous les utilisateurs et figurent dans la liste déroulante sous l'option Fichier XSLT préconfiguré (voir Importation personnalisée pour plus de détails). Les fichiers sont stockés dans un répertoire par table dans l'un des deux emplacements suivants :
etc/import/table
Emplacement des scripts XSLT indépendants du client. Ces scripts se chargent généralement dans les modules de base d'EMu qui ne varient pas d'un client à l'autre (par exemple, Personnes / Organisations, etc.). Les clients ne doivent pas ajouter de scripts à cet emplacement, car ces scripts sont ajoutés par les développeurs d'EMu.
local/etc/import/table
Emplacement des scripts XSLT spécifiques au client. Tous les scripts qui transforment les données pour les modules spécifiques à l'institution doivent être conservés dans cet emplacement. Tous les scripts du client doivent être ajoutés à cet emplacement.
Lors de l'installation d'un script sur le serveur EMu le répertoire local/etc/import/table
peut ne pas exister, auquel cas il sera nécessaire de la créer. Par exemple, si vous avez un script appelé "BRAHMS.xslt" qui transforme Brahms XML pour chargement dans votre module Catalogue d'EMu, vous le stockeriez sous :
local/etc/import/ecatalogue/BRAHMS.xslt
L'entrée qui apparaît dans la liste déroulante de l'Assistant d'importation est le nom du fichier sans son extension (par exemple BRAHMS pour BRAHMS.xslt). Le nom du fichier peut contenir des espaces. Les scripts XSLT ne doivent pas nécessairement avoir d’extension .xslt, mais c'est l'extension généralement utilisée.